package com.yzy.util;

import com.yzy.entity.File;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Repository;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author mgl
 * @version 1.0
 * @description TODO
 * @date 2023/7/26 19:13
 */
@Repository
@PropertySource(value = "classpath:application.yml")
public class FileUtil {

    @Value("${spring.file-path}")
    String path;

    public File transferDocumentFile(MultipartFile multipartFile) throws Exception {
        File entity = new File();
        //判断文件是否存在
        java.io.File file = new java.io.File(path);
        if (!file.exists()) {
            file.mkdir();
        }
        List<File> list = new ArrayList<>();
        //获取上传文件的名称
        String filename = multipartFile.getOriginalFilename();
        //修改文件名称
        String suffix = filename.substring(filename.lastIndexOf("."));

        System.out.println("suffix: " + suffix);
        suffix = suffix.toLowerCase();
        //if ((!suffix.equals(".doc")) && (!suffix.equals(".pdf")) && (!suffix.equals(".docx"))) {
        if (!suffix.equals(".pdf")) { //这个版本让他只能上传pdf吧，以后再更新
            throw new Exception(Message.FILE_FORMAT_ERROR);
        }
        //拼接文件名
        String newName = path + java.io.File.separator + System.currentTimeMillis() + suffix;

        //上传
        multipartFile.transferTo(new java.io.File(newName));
        //封装javabean对象
        entity.setPath(newName);
        entity.setRealPath(newName);
        entity.setRealName(filename);
        entity.setName(filename);
        entity.setUploadTime(new Date());
        //如果是pdf的话，文件类型设置为0，doc为1，docx为2

        if (suffix.equals(".pdf")) entity.setFileType(0);
        else if (suffix.equals(".doc"))entity.setFileType(1);
        else entity.setFileType(2);

        entity.setDownloadCount(0);
        //在集合中添加
        list.add(entity);

        return entity;
    }

    public String transferAvatarFile(MultipartFile multipartFile) throws Exception{
        File entity = new File();
        //判断文件是否存在
        java.io.File file = new java.io.File(path);
        if (!file.exists()) {
            file.mkdir();
        }
        List<File> list = new ArrayList<>();
        //获取上传文件的名称
        String filename = multipartFile.getOriginalFilename();
        //修改文件名称
        String suffix = filename.substring(filename.lastIndexOf("."));

        System.out.println("suffix: " + suffix);
        suffix = suffix.toLowerCase();
        if (!suffix.equals(".jpg") && !suffix.equals(".jpeg") && !suffix.equals(".png")) {
            throw new Exception(Message.AVATAR_FORMAT_ERROR);
        }
        //拼接文件名
        String newName = path + java.io.File.separator + System.currentTimeMillis() + suffix;
        //上传
        multipartFile.transferTo(new java.io.File(newName));

        return newName;
    }
}
